package main;

public class GeradorNumerosAleatoriosMisto implements IGeradorNPA{
	private int semente;
	private int bits;
	private int count = 0;
	private int fatorAditivo;
	
	public GeradorNumerosAleatoriosMisto(int semente, int bits, int fatorAditivo){
		this.semente = semente;
		this.bits = bits;
		this.fatorAditivo = fatorAditivo;
	}
	
	public int next(){
		return mixto(count++);
	}
	
	private int mixto(int n){
		if(n <= 0){
			return semente;
		}
		return ((count*(mixto(n-1) + mixto(n-count))) + fatorAditivo)%bits;
	}
}
